#ifndef TEXTUREREFERENCE_H_
#define TEXTUREREFERENCE_H_

#include <string>
#include "texture/Texture.h"
#include "texture/UVLayer.h"

enum BlendMode{
	MIX, MULTIPLY
};

class TextureReference {
private:
	Texture* texture;
	UVLayer* uvLayer;
	BlendMode blendMode;
	float blendFactor;
public:
	TextureReference();
	void use(unsigned int textureUnit, unsigned int faceIndex, unsigned int vertIndex);
	virtual ~TextureReference();
	float getBlendFactor() const {
		return blendFactor;
	}

	BlendMode getBlendMode() const {
		return blendMode;
	}

	Texture *getTexture() const {
		return texture;
	}

	UVLayer *getUvLayer() const {
		return uvLayer;
	}

	void setBlendFactor(float blendFactor) {
		this->blendFactor = blendFactor;
	}

	void setBlendMode(BlendMode blendMode) {
		this->blendMode = blendMode;
	}

	void setTexture(Texture *texture) {
		this->texture = texture;
	}

	void setUvLayer(UVLayer *uvLayer) {
		this->uvLayer = uvLayer;
	}

};

#endif /* TEXTUREREFERENCE_H_ */
